<?php
class InformacionesE
{
	//propiedades
	var $Detalle;
	var $Num_Regs=0;
	//propiedades internas
	var $ErrorMsg;//Muestra el ultimo error en la clase
	private $CN;//conexion pasada a la clase en el constructor
	var $SQL;//muestra la consulta actual
	
	//constructor
	public function InformacionesE(&$bd,$operadorambito_id=0,$tipo_id=false,$anno=false,$estado=false){
		$this->CN=$bd;
		
		//obtiene si el tipo es anual para ordenarlo por fecha o por numero
		$this->SQL=sprintf("SELECT IdTipo,EsAnual FROM c_infotipos_e WHERE IdTipo=%s",$tipo_id);
		$this->CN->query($this->SQL);
		$this->CN->next_record();
		if($this->CN->f('EsAnual')){
		
			if(!$anno) $anno=date('Y');
			if($estado){
				if($tipo_id){
					if($this->pgetOrdenTipo($tipo_id)){
						$this->SQL=sprintf("SELECT IdInfo,Titulo FROM c_infos_e WHERE Ano=%s AND IdOperadorAmbito=%s AND IdTipo=%s AND Estado!=0 ORDER BY Titulo",$anno,$operadorambito_id,$tipo_id);
					}else{
						$this->SQL=sprintf("SELECT IdInfo,Numero FROM c_infos_e WHERE Ano=%s AND IdOperadorAmbito=%s AND IdTipo=%s AND Estado!=0 ORDER BY Numero DESC,IdInfo",$anno,$operadorambito_id,$tipo_id);
					}
				}else{
					$this->SQL=sprintf("SELECT IdInfo,Numero FROM c_infos_e WHERE Ano=%s AND IdOperadorAmbito=%s AND Estado!=0 ORDER BY Numero DESC,IdInfo",$anno,$operadorambito_id);
				}
			}else{
				if($tipo_id){
					if($this->pgetOrdenTipo($tipo_id)){
						$this->SQL=sprintf("SELECT IdInfo,Titulo FROM c_infos_e WHERE Ano=%s AND IdOperadorAmbito=%s AND IdTipo=%s ORDER BY Titulo",$anno,$operadorambito_id,$tipo_id);
					}else{
						$this->SQL=sprintf("SELECT IdInfo,Numero FROM c_infos_e WHERE Ano=%s AND IdOperadorAmbito=%s AND IdTipo=%s ORDER BY Numero DESC,IdInfo",$anno,$operadorambito_id,$tipo_id);
					}
				}else{
					$this->SQL=sprintf("SELECT IdInfo,Numero FROM c_infos_e WHERE Ano=%s AND IdOperadorAmbito=%s ORDER BY Numero DESC,IdInfo",$anno,$operadorambito_id);
				}
			}
		
		}else{
		
			if($estado){
				if($tipo_id){
					if($this->pgetOrdenTipo($tipo_id)){
						$this->SQL=sprintf("SELECT IdInfo,Titulo FROM c_infos_e WHERE IdOperadorAmbito=%s AND IdTipo=%s AND Estado!=0 ORDER BY Titulo",$anno,$operadorambito_id,$tipo_id);
					}else{
						$this->SQL=sprintf("SELECT IdInfo,Fecha FROM c_infos_e WHERE IdOperadorAmbito=%s AND IdTipo=%s AND Estado!=0 ORDER BY Fecha DESC",$anno,$operadorambito_id,$tipo_id);
					}
				}else{
					$this->SQL=sprintf("SELECT IdInfo,Fecha FROM c_infos_e WHERE IdOperadorAmbito=%s AND Estado!=0 ORDER BY Fecha DESC",$anno,$operadorambito_id);
				}
			}else{
				if($tipo_id){
					if($this->pgetOrdenTipo($tipo_id)){
						$this->SQL=sprintf("SELECT IdInfo,Titulo FROM c_infos_e WHERE IdOperadorAmbito=%s AND IdTipo=%s ORDER BY Titulo",$operadorambito_id,$tipo_id);
					}else{
						$this->SQL=sprintf("SELECT IdInfo,Fecha FROM c_infos_e WHERE IdOperadorAmbito=%s AND IdTipo=%s ORDER BY Fecha DESC",$operadorambito_id,$tipo_id);
					}
				}else{
					$this->SQL=sprintf("SELECT IdInfo,Fecha FROM c_infos_e WHERE IdOperadorAmbito=%s ORDER BY Fecha DESC",$operadorambito_id);
				}
			}
		
		}
		$this->CN->query($this->SQL);
		if($this->CN->Errno){
			$this->ErrorMsg=$this->CN->Error;
			return false;
		}
		$cont=0;
		while($this->CN->next_record()){
			$this->Detalle[$cont]=$this->CN->f('IdInfo');
			$cont++;
		}
		$this->Num_Regs=$cont;
		return true;
	}
	
	//obtiene si el tipo se ordena por título y no por numero o fecha
	private function pgetOrdenTipo($idtipo){
		$this->SQL=sprintf("SELECT IdTipo,EsOrdenTitulo FROM c_infotipos_e WHERE IdTipo=%s",$idtipo);
		$this->CN->query($this->SQL);
		$this->CN->next_record();
		return $this->CN->f('EsOrdenTitulo');
	}
}

?>